home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / dist / newproto.txt < prev   
Text File  |  1997-10-26  |  10KB  |  273 lines

  1. Neues Protokoll fr CAT:
  2.  
  3. Basisnachricht:
  4.  
  5. 0x8003
  6.  
  7. Aufbau: 
  8.  
  9. msgbuf[0] = 0x8003; (* Message-ID *)
  10. msgbuf[1] = apId;   (* CAT bzw. Kommunikationspartner, Absender halt *)
  11. msgbuf[2] = 0;      (* Oversize, immer 0 *)
  12. msgbuf[3] = sub-opcode;
  13. msgbuf[4+5] = L„nge des Buffers;
  14. msgbuf[6+7] = Adresse des Buffers;
  15.  
  16. Die Kommunikation l„uft haupts„chlich unidirectional ab, d.h. 
  17. eine Applikation fordert etwas an und CAT antwortet. Nur sehr wenige 
  18. Nachrichten werden von CAT unaufgefordert verschickt. 
  19. Prinzipiell l„uft es so:
  20. Die Applikation m”chte etwas wissen und fragt bei CAT nach. Dazu bergibt 
  21. es einen Buffer und die L„nge dieses Buffers. CAT kopiert die gewnschte
  22. Information in den Buffer. Da man teilweise auch variabel lange 
  23. Daten abfragen m”chte, gibt es folgende M”glichkeit: Das ACC fragt mit 
  24. Bufferl„nge 0 an und erh„lt als Antwort in der Bufferl„nge die notwendige
  25. L„nge des Buffers, um die gewnschte Information aufnehmen zu k”nnen. 
  26. Da die L„nge, die CAT zurckliefert, die reine L„nge der Daten ist, 
  27. sollte man noch ein Byte fr das anh„ngenden Nullzeichen als String-
  28. abschluž hinzurechnen. Bei einer L„nge von 0 ist die Information
  29. nicht verfgbar. Man kann sie trotzdem abfragen, erh„lt aber halt einen 
  30. leeren String zurck. Nach der L„ngenabfrage kann die andere Applikation 
  31. mit einem passend allozierten Buffer nochmal anfragen. 
  32. Der Buffer muž unter Systemen mit memory protection von CAT beschreibbar 
  33. sein. CAT selber stellt keinen Buffer dafr zur Verfgung. 
  34.  
  35. Sollte der bergebene Buffer fr die Daten nicht ausreichen, so gibt
  36. CAT keinerlei Daten zurck, sondern liefert eine ERROR-Antwort zurck.
  37.  
  38. Dieses Protokoll sollte auch fr andere Frontends (namentlich: THE_DOT)
  39. implementierbar sein, da auch eine Teilimplementation mit den notwendigen
  40. Funktionen z.B. fr CATalog m”glich ist. Dafr reicht es, die An- und 
  41. Abmeldung zu implementieren und die Abfragen fr Name, Betreff und Gruppe.
  42.  
  43. Alle Werte bis auf die apId sind brigens unsigned!
  44.  
  45. Folgende Sub-Opcodes sind definiert:
  46.  
  47. 00:     ACKNOWLEDGE (kein Buffer)
  48. 01:     ERROR (kein Buffer)
  49. 02:     Anmeldung bei CAT
  50. 03:     Abmeldung bei CAT
  51. 04:     Abfrage Absender
  52. 05:     Abfrage Realname
  53. 06:     Abfrage Empf„nger
  54. 07:     Abfrage MsgId (#-Zeile)
  55. 08:     Abfrage lange MsgId (I-Zeile)
  56. 09:     Abfrage '-'-Zeile
  57. 10:     Abfrage Ref-Id (R-Zeile)
  58. 11:     Abfrage Stichwort
  59. 12:     Abfrage Organization (O-Zeile)
  60. 13:     Abfrage Gateway (Y-Zeile)
  61. 14:     Abfrage Distribution (D-Zeile)
  62. 15:     Abfrage Mime (M-Zeile)
  63. 16:     Abfrage Status pers”nliche Nachricht
  64. 17:     Abfrage Followup-To (F-Zeile)
  65. 18:     Abfrage Reply-To
  66. 19:     Abfrage Message-Text
  67. 20:     Abfrage Message-Datum
  68. 21:     Abfrage Status-Datum
  69. 22:     Abfrage Gruppe
  70. 23:     Abfrage Originaltext, wie in Datenbank gespeichert
  71. 24:     Abfrage eigene Nachricht
  72. 25:     Abfrage eindeutige Id
  73. 100:    Neue Nachricht in Fenster (CAT => ACC)
  74. 101:    CAT wird beendet
  75.  
  76. Weitere Sub-Opcodes werden bei Bedarf eingefhrt.
  77.  
  78. Einige Sub-Opcodes sind zwar definiert und werden von CAT auch bearbeitet,
  79. aber da die Daten nicht vorhanden sind, wird immer 0 als L„nge zurckgegeben 
  80. und keine Daten. Dies betrifft insbesondere Followup-To und teilweise 
  81. ReplyTo.
  82.  
  83. Im folgenden werden die Sub-opcodes etwas genauer beschrieben:
  84.  
  85. 00:     ACKNOWLEDGE 
  86.  
  87. Das ist die Antwort von CAT auf die An-/Abmeldung vom ACC, wenn diese
  88. geklappt hat. Ansonsten bekommt das ACC ERROR zurck. 
  89. msgbuf[4-7] sind 0, da kein Buffer bergeben wird.
  90.  
  91. 01:     ERROR 
  92. Das ist die Antwort von CAT auf die An-/Abmeldung vom ACC, wenn diese
  93. nicht geklappt hat. Drfte nur bei extremen Speichermangel passieren.
  94. Aužerdem wird ERROR bei jeder nicht implementierten Funktion 
  95. zurckgegeben. msgBuf[4] enth„lt den sub-opcode, der zu dem Fehler
  96. fhrte. msgbuf[5-7] sind 0.
  97.  
  98. 02:     Anmeldung bei CAT
  99. Dies schickt ein ACC an CAT zur Anmeldung. Damit wird es ber 
  100. Nachrichtenwechsel automatisch informiert und kann die Informationen
  101. dann von CAT abfragen.
  102. msgbuf[4-7] sind 0, da kein Buffer bergeben wird.
  103.  
  104. 03:     Abmeldung bei CAT
  105. Damit meldet sich ein ACC wieder bei CAT ab. Das ACC wird aus der Liste
  106. der beteiligten Empf„nger ausgetragen und erh„lt als Antwort ein ACKNOWLEDGE.
  107. msgbuf[4-7] sind 0, da kein Buffer bergeben wird.
  108.  
  109. Die folgenden Funktionen sind alles Abfrage-Funktionen, die ein Element einer
  110. Nachricht abfragen k”nnen. Bei allen Elementen ist es m”glich, das CAT
  111. nichts zurckliefert. In dem Fall wird in dem Buffer einfach ein leerer
  112. String zurckgegeben. Wenn nur die L„nge abgefragt wird durch eine 
  113. bergebene Bufferl„ngee von 0, gibt CAT auch eine 0 als L„nge zurck. Die 
  114. Antwort besteht immer aus der gleichen Nachricht wie die Anfrage.
  115.  
  116. 04:     Abfrage Absender
  117. Absender der Nachricht, falls vorhanden (Mailadresse).
  118.  
  119. 05:     Abfrage Realname
  120. Realname des Absenders, falls vorhanden.
  121.  
  122. 06:     Abfrage Empf„nger 
  123. Empf„nger der Nachricht, falls vorhanden (meistens nur bei PMs)
  124.  
  125. 07:     Abfrage MsgId (#-Zeile)
  126. Message-Id aus der #-Zeile, ist immer vorhanden
  127.  
  128. 08:     Abfrage lange MsgId (I-Zeile)
  129. Lange Message-Id, meistens vorhanden
  130.  
  131. 09:     Abfrage '-'-Zeile
  132. Verkettung nach oben
  133.  
  134. 10:     Abfrage Ref-Id (R-Zeile)
  135. Verkettung ber lange Id
  136.  
  137. 11:     Abfrage Stichwort
  138. Stichwort der Nachricht, kann auch leer sein.
  139.  
  140. 12:     Abfrage Organization (O-Zeile)
  141. O-Zeile aus Outfile
  142.  
  143. 13:     Abfrage Gateway (Y-Zeile)
  144. Y-Zeile aus Outfile
  145.  
  146. 14:     Abfrage Distribution (D-Zeile)
  147. D-Zeile aus Outfile. Inhalt: K, L, M, N: Keine, Lokal, MausNet, Net
  148.  
  149. 15:     Abfrage Mime (M-Zeile)
  150. Inhalt der M-Zeile. Eventuelle Fortsetzung im Text wird nicht zurckgegeben.
  151.  
  152. 16:     Abfrage Status pers”nliche Nachricht
  153. Nur bei PMs vorhanden, sondern wird nichts zurckgeliefert.
  154.  
  155. 17:     Abfrage Follow-Up To (F-Zeile)
  156. Wird zurckgegeben, wenn es im Outfile vorhanden war, also momentan noch
  157. gar nicht. Aužerdem kann CAT es noch nicht. Daher liefert das immer einen
  158. leeren String.
  159.  
  160. 18:     Abfrage Reply-To
  161. Wird zurckgegeben, wenn es im Outfile vorhanden war, also momentan noch
  162. gar nicht. Aužerdem kann CAT es noch nicht. Daher liefert das immer einen
  163. leeren String.
  164.  
  165. 19:     Abfrage Message-Text
  166. Liefert den gesamten Text der Nachricht zurck, wie er in der Datenbank
  167. gespeichert ist. L„nge ist theoretisch nicht begrenzt, praktisch momentan
  168. auf 64 KB. Es wird von CAT momentan der Text zurckgegeben, wie er an den
  169. Editor bergeben wurde. Eventuelle Filterungen von MIME-Opcodes sind 
  170. dort schon durchgefhrt worden und der Text wurde noch nicht umbrochen, 
  171. d.h. es k”nnen lange Zeilen vorkommen. Der Text wird im internen Format 
  172. von CAT bergeben, d.h. als Zeilenende dient ein einzelnes LF.
  173.  
  174. 20:     Abfrage Message-Datum
  175. Liefert Erstellungsdatum der Nachricht im GEMDOS-Format zurck. 
  176. Im ersten Wort im Buffer das Datum, im zweiten die Zeit. Theoretisch
  177. k”nnte man das auch komplett in den Messagebuffer packen und mžte nicht
  178. einen Speicherblock bergeben, aber zur Vereinheitlichung der Implementation
  179. wird auch hier der bergebene Speicherblock benutzt.
  180.  
  181. 21:     Abfrage Statusdatum
  182. Liefert Statusdatum der pers”nlichen Nachricht im GEMDOS-Format zurck. 
  183. Wenn es keine PM ist, wird nur 0 als Zeit und Datum zurckgeliefert.
  184. Ansonsten gilt das gleiche wie bei 20.
  185.  
  186. 22:     Abfrage Gruppe
  187. Liefert den Namen der aktuellen Gruppe.
  188.  
  189. 23:     Abfrage Originaltext
  190. Liefert den gesamten Text der Nachricht zurck, wie er in der Datenbank
  191. gespeichert ist. L„nge ist theoretisch nicht begrenzt, praktisch momentan
  192. auf 64 KB. Es wird von CAT der Text zurckgegeben, wie er in der Datenbank
  193. gespeichert wurde, d.h. es wurden keine Filterungen durchgefhrt, keine
  194. Infozeilen in den Text eingeblendet etc. Der Text wird im internen Format 
  195. von CAT bergeben, d.h. als Zeilenende dient ein einzelnes LF.
  196.  
  197. 24: Abfrage eigene Nachricht 
  198. Fragt nach, ob im Fenster eine eigene Nachricht dargestellt wird.
  199. Liefert nur in der pers”nlichen Gruppe bei eigenen Nachrichten 
  200. TRUE zurck. Im Buffer wird ein Wort bergeben, das 1 ist fr eine
  201. eigene pers”nliche Nachricht, und sonst 0. Weitere Werte werden nicht 
  202. zurckgeliefert.
  203.  
  204. 25: Abfrage eindeutige Id
  205. Fragt nach einer eindeutigen ID pro Nachricht. Gibt einen unsigned long
  206. zurck, der die Nachricht innerhalb eines CAT-Laufes innerhalb einer
  207. Datenbank eindeutig identifiziert.
  208.  
  209. 26: Abfrage Absender aus Sender-Zeile
  210. Liefert den Absender zurck, wie er in der Sender-Zeile (S-Zeile) im
  211. Outfile kam
  212.  
  213. 27: Abfrage Absendername im Fenster
  214. Liefert den Namen zurck, den CAT im Fenster anzeigt. Bei eigenen
  215. pers”nlichen Nachrichten ist das der des Empf„ngers, sonst der 
  216. des Absenders.
  217.  
  218. Die folgende Nachricht wird nur von CAT an die angemeldeten Applikationen 
  219. verschickt, und zwar jedesmal, wenn im obersten Anzeigefenster eine neue 
  220. Nachricht dargestellt wird. Die Nachricht wird auch verschickt, wenn ein 
  221. Anzeigefenster nur getoppt wird.
  222.  
  223. 100: Neue Nachricht in Fenster
  224. msgbuf[4-7] sind 0, da kein Buffer bergeben wird. 
  225.  
  226. Die folgende Nachricht wird nur von CAT an die angemeldeten Applikationen 
  227. verschickt, und zwar jedesmal, wenn CAT beendet wird.
  228.  
  229. 101: CAT wird beendet
  230. Wird verschickt, wenn CAT beendet wird. msgbuf[4-7] sind 0.
  231.  
  232. Hier noch die Definition der einzelnen Nachrichten, wie sie in CAT 
  233. implementiert ist:
  234.  
  235. CONST
  236.   CatProtoMsg   = 8003H;        (* Neues CAT-Protokoll *)
  237.  
  238.   (* Sub-Opcodes fr neues CAT-Protokoll *)
  239.   (* Doku: Siehe NEWPROTO.TXT            *)
  240.   
  241.   CAT_ACK           = 0;
  242.   CAT_ERROR         = 1;
  243.   CAT_LOGIN         = 2;
  244.   CAT_LOGOFF        = 3;
  245.   CAT_SENDER        = 4;
  246.   CAT_RNAME         = 5;
  247.   CAT_RECEIVER      = 6;
  248.   CAT_MAUS_ID       = 7;
  249.   CAT_MSG_ID        = 8;
  250.   CAT_MAUS_REF      = 9;
  251.   CAT_REF           = 10;
  252.   CAT_TOPIC         = 11;
  253.   CAT_BOX           = 12;
  254.   CAT_GATE          = 13;
  255.   CAT_DIST          = 14;
  256.   CAT_MIME          = 15;
  257.   CAT_STATUS        = 16;
  258.   CAT_FOLLOWUP      = 17;
  259.   CAT_REPLYTO       = 18;
  260.   CAT_TEXT          = 19;
  261.   CAT_MSG_DATE      = 20;
  262.   CAT_STATUS_DATE   = 21;
  263.   CAT_GROUP         = 22;
  264.   CAT_ORG_TEXT      = 23;
  265.   CAT_IS_OWN        = 24;
  266.   CAT_UNIQUE_ID     = 25;
  267.   CAT_REAL_SENDER   = 26;
  268.   CAT_WDW_NAME      = 27;
  269.   
  270.   CAT_NEW_MSG       = 100;
  271.   CAT_TERMINATE     = 101;
  272.  
  273.